#pragma once
#include <string>
#include <regex>
using namespace std;

class CyRoutine
{
public:
	CyRoutine(void);
	~CyRoutine(void);

	static bool IsInteger(const wstring& num);
	static bool IsInteger(const wchar_t * num);

	static bool IsPositiveInteger(const wstring& num);
	static bool IsPositiveInteger(const wchar_t * num);

	static bool IsFloatingPoint(const wstring& num);
	static bool IsFloatingPoint(const wchar_t * num);

	static bool IsPositiveFloatingPoint(const wstring& num);
	static bool IsPositiveFloatingPoint(const wchar_t * num);

	static int GetInt(const wstring& num);
	static int GetInt(const wchar_t * num);

	static long long GetLongLong(const wstring& num);
	static long long GetLongLong(const wchar_t * num);

	static float GetFloat(const wstring& num);
	static float GetFloat(const wchar_t * num);

	static double GetDouble(const wstring& num);
	static double GetDouble(const wchar_t * num);

private:
	static wregex REGEX_INT;
	static wregex REGEX_POS_INT;
	static wregex REGEX_FLOAT;
	static wregex REGEX_POS_FLOAT;
};